package com.example.demo.spring.beans.factory.config;

/**
 * 定义对单例的注册及获取
 *
 * @author: htc
 * @date: Created in 15:08 2018/11/29.
 */
public interface MySingletonBeanRegistry {
    /**
     * 在bean注册表中将给定的现有对象注册为singleton
     * @param beanName
     * @param singletonObject
     */
    void registerSingleton(String beanName, Object singletonObject);

    /**
     *返回指定的单例对象
     * @param beanName
     * @return
     */
    Object getSingleton(String beanName);

    /**
     * 检查注册表中是否包含该单例对象
     * @param beanName
     * @return
     */
    boolean containsSingleton(String beanName);

    /**
     * 返回在此注册表中注册的所有单例bean的名称
     * @return
     */
    String[] getSingleNames();

    /**
     * 返回在此注册表中注册的所有单例bean的总数
     * @return
     */
    int getSingletonCount();

    /**
     * 返回此注册表使用的单例互斥锁
     * @return
     */
    Object getSingletonMutex();
}
